<?php
class Inscripto extends AppModel {
	var $name = 'Inscripto';
	
	//Prueba de Búsqueda
		var $actAs = array('Searchable');
	//Fin prueba de Búsqueda
	
	var $validate = array(
	
			'dni' => array(
				'numeric' => array(
					'rule' => 'numeric',
					'message' => 'El campo DNI debe contener solo números',
					'required' => true,
				),
				'tamanio' => array(
					'rule' => array('between', 7, 8),
		        	'message' => 'El campo DNI debe contener entre 7 y 8 caracteres',
				),
				'unico' => array(
					'rule' => 'isUnique',
					'message' => 'El campo DNI debe ser único',
				),
			),
			'nombre' => array (
				'nombre' => array (
					'rule' => array('custom', '/^[a-z áéíóúÁÉÍÓÚ]{3,50}$/i'),
					'message' => 'El campo nombre debe ser alfanumérico, entre 3 y 100 caracteres',
					'required' => true,
				),
			),
			'email' => array(
				'email' => array(
					'rule' => 'email',
					'message' => 'El campo email debe contener un email válido',
					'required' => true,
				),
			),
			'localidad' => array (
				'localidad' => array (
					'rule' => array('custom', '/^[a-z áéíóúÁÉÍÓÚ]{3,50}$/i'),
					'message' => 'El campo localidad debe ser alfanumérico, entre 3 y 100 caracteres',
					'required' => true,
				),
			),
		);
		
	/**
	 * Aquí se realiza la actualización de inscriptos desde un archivo subido al servidor
	 */
	public function actualizar($filename) {
		# to avoid having to tweak the contents of
		# $data you should use your db field name as the heading name
		# eg: Post.id, Post.title, Post.description

		# set the filename to read CSV from
		$filename = TMP . 'uploads' . DS . 'Inscripto' . DS . $filename;

		# open the file
		$handle = fopen($filename, "r") or die('Error al abrir el archivo.');

		# read the 1st row as headings
		$header = fgetcsv($handle);

		# create a message container
		$return = array('messages' => array(), 'errors' => array(), );

		# inicializo las variables
		$nuevos = 0;

		# read each data row in the file
		while(($fila = fgetcsv($handle)) !== FALSE) {
			$data = array();

			$data['Inscripto']['dni'] = $fila[0];
			$data['Inscripto']['nombre'] = $fila[1];
			$data['Inscripto']['email'] = $fila[2];
			$data['Inscripto']['localidad'] = $fila[3];
			$data['Inscripto']['constancia'] = $fila[4];

			# busco si existe el producto con el código
			$inscripto = $this -> findByDni($data['Inscripto']['dni']);

			# si existe, se actualiza, sino se crea
			if(isset($inscripto['Inscripto'])) {
				$this -> id = $inscripto['Inscripto']['id'];
			} else {
				$this -> create();
				$nuevos++;
			}
			$this -> set($data);
			$this -> save($data);
		}
		return $nuevos;
	}
}
?>